export const getFileType = (extension) => {
  const ext = extension.toLowerCase();

  // 定义类型映射
  const typeMap = {
    // Document类型
    txt: 'document',
    md: 'document',
    markdown: 'document',
    pdf: 'document',
    html: 'document',
    xlsx: 'document',
    xls: 'document',
    docx: 'document',
    csv: 'document',
    eml: 'document',
    msg: 'document',
    pptx: 'document',
    ppt: 'document',
    xml: 'document',
    epub: 'document',

    // Image类型
    jpg: 'image',
    jpeg: 'image',
    png: 'image',
    gif: 'image',
    webp: 'image',
    svg: 'image',

    // Audio类型
    mp3: 'audio',
    m4a: 'audio',
    wav: 'audio',
    webm: 'audio',
    amr: 'audio',

    // Video类型
    mp4: 'video',
    mov: 'video',
    mpeg: 'video',
    mpga: 'video',
  };

  return typeMap[ext] || 'custom';
};

// 获取文件类型图标
export const getFileIcon = (file) => {
  const extension = file.name.split('.').pop()?.toLowerCase();
  switch (extension) {
    case 'pdf':
      return 'file-pdf';
    case 'doc':
    case 'docx':
      return 'file-word';
    case 'xls':
    case 'xlsx':
      return 'file-excel';
    case 'ppt':
    case 'pptx':
      return 'file-ppt';
    case 'jpg':
    case 'jpeg':
    case 'png':
    case 'gif':
      return 'file-image';
    case 'zip':
    case 'rar':
      return 'file-zip';
    default:
      return 'file';
  }
};

// 格式化文件大小
export const formatFileSize = (bytes) => {
  if (bytes === 0) return '0 B';
  const k = 1024;
  const sizes = ['B', 'KB', 'MB', 'GB'];
  const i = Math.floor(Math.log(bytes) / Math.log(k));
  return `${parseFloat((bytes / k ** i).toFixed(2))} ${sizes[i]}`;
};
